page.tsx 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. "use client";
  2. import { FC, PropsWithChildren, useEffect, useMemo, useState } from "react";
  3. import HeaderBack from "@/components/HeaderBack";
  4. import ButtonOwn from "@/components/ButtonOwn";
  5. import DomainFooter from "@/components/DomainFooter";
  6. import './page.scss'
  7. import React from "react";
  8. import {getFindPwdApi} from "@/api/user";
  9. import { useSearchParams } from "next/navigation";
  10. import { useRouter } from "@/i18n";
  11. interface Props {}
  12. const ResetPhone: FC<PropsWithChildren<Props>> = () => {
  13. const router:any = useRouter()
  14. let searchParams = useSearchParams();
  15. let user_phone = searchParams.get('userPhone')
  16. let code = searchParams.get('code')
  17. let [fromParam, setFromParam] = useState({
  18. pwd: '',
  19. againPwd: ''
  20. })
  21. const setInputVal = (e: { target: { name: any; value: any; }; }) => {
  22. const {name, value} = e.target;
  23. setFromParam({
  24. ...fromParam,
  25. [name]: value
  26. })
  27. }
  28. const verifyPwd = (e: any) => {
  29. let pwd = e.target.value || '';
  30. pwd.replaceAll(/[^a-zA-Z0-9_-]/g, '')
  31. setFromParam({ ...fromParam, pwd })
  32. }
  33. const activeCls = useMemo(() => {
  34. let { pwd, againPwd } = fromParam
  35. if (pwd && againPwd && pwd.length==againPwd.length) {
  36. return true
  37. }
  38. return false
  39. }, [fromParam]);
  40. let [msgError, setMsgError] = useState('')
  41. const findPwdRequest = () => {
  42. let { pwd, againPwd } = fromParam
  43. if (pwd && againPwd && pwd!=againPwd) {
  44. setMsgError('两次输入的密码不相同')
  45. return true
  46. }
  47. getFindPwdApi({user_phone, code, pwd}).then((res) => {
  48. setMsgError(res.msg || '')
  49. if(res.code == 200) {
  50. alert('修改成功')
  51. router.replace('/login')
  52. }
  53. })
  54. }
  55. return (
  56. <div className="confirmPassword-box">
  57. <HeaderBack />
  58. <div className="main">
  59. <div className="title">
  60. <h2>Ativa a sua conta por entrar a Senha de Verificação!</h2>
  61. <div>A senha de verificação foi enviado para o teu telemóvel 16982013895</div>
  62. </div>
  63. <div className="phoneInput">
  64. <input name="pwd" type="password" value={fromParam.pwd} onChange={setInputVal} onInput={verifyPwd} placeholder="Senha" maxLength={12}/>
  65. </div>
  66. <div className="phoneInput">
  67. <input name="againPwd" type="password" value={fromParam.againPwd} onChange={setInputVal} placeholder="Senha" maxLength={12}/>
  68. </div>
  69. { msgError && <div className="tips"> {msgError} </div> }
  70. <div className="btnContent">
  71. <ButtonOwn active={activeCls} callbackFun={findPwdRequest}>Completar</ButtonOwn>
  72. </div>
  73. </div>
  74. <DomainFooter />
  75. </div>
  76. );
  77. };
  78. export default ResetPhone;